package udpdemo1;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;

/**
 * Created by L.jp
 * Description:
 * User: 86189
 * Date: 2022-08-08
 * Time: 22:54
 */
//模拟接收方接受数据报包
/*
UDP接收数据
释放资源
接收礼物的步骤：
① 找码头       创建接收端的DatagramSocket对象
② 找新箱子      创建一个箱子，用于接收数据
③ 码头接收礼物并放入新箱子中     调用DatagramSocket的方法接收数据并将数据放入箱子中
④ 村长从箱子里获取礼物            解析数据包，并把数据在控制台显示
⑤ 拿完走羊                      释放资源
*/
public class ServerDemo {
    //注意点:
    //1.要先运行接收端,再运行发送端
    //2.如果接收端再启动之后,没有接收到数据,那么会死等(阻塞).
    //3.在接收数据的时候,需要调用一个getLength方法,表示接收到了多少字节
    public static void main(String[] args) throws IOException {
        //创建接收端对象，从指定的端口接收
        DatagramSocket socket=new DatagramSocket(2232);
        
        //创建一个新的箱子
        byte [] bytes = new byte[1024];
        DatagramPacket packet = new DatagramPacket(bytes,bytes.length);
        //接收礼物,把礼物放到新的箱子中
        System.out.println("-----------接收前----------");
        socket.receive(packet);
        System.out.println("------------接收后---------");
        System.out.println();
        //4.从新的箱子里面获取礼物
        byte[] data = packet.getData();
        //int length = packet.getLength();
    
        System.out.println("拿到的数据是："+new String(data,0, packet.getLength()));
       // System.out.println(new String(bytes,0,length));
        //拿完走羊
        socket.close();
    }
}
